﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuanLyGiaoVuDAL.DTO;
using QuanLyGiaoVuDAL.Repositories.DatabaseRepositories;

namespace QuanLyGiaoVuService.CommandServices
{
    public class ThongBaoCommandService:IThongBaoCommandService
    {
        private IThongBaoRepository _thongBaoRepository;
        private IChiTietThongBaoRepository _chiTietThongBaoRepository;

        public ThongBaoCommandService(IThongBaoRepository thongBaoRepository, IChiTietThongBaoRepository chiTietThongBaoRepository)
        {
            _thongBaoRepository = thongBaoRepository;
            _chiTietThongBaoRepository = chiTietThongBaoRepository;
        }
        public ThongBaoDTO InsertThongBao(ThongBaoDTO thongBaoDTO)
        {
            if (thongBaoDTO.MaThongBao.Equals(Guid.Empty))
                thongBaoDTO.MaThongBao = Guid.NewGuid();
            return _thongBaoRepository.InsertThongBao(thongBaoDTO);
        }
        public bool DeleteThongBao(Guid MaThongBao)
        {
            return _thongBaoRepository.DeleteThongBao(MaThongBao);
        }
        public ThongBaoDTO UpdateThongBao(ThongBaoDTO thongBaoDTO)
        {
            return _thongBaoRepository.UpdateThongBao(thongBaoDTO);
        }

        public void InsertThongBao(ThongBaoDTO thongBaoDTO, IEnumerable<Guid> danhSachNguoiNhan)
        {
            if (thongBaoDTO.MaThongBao.Equals(Guid.Empty))
                thongBaoDTO.MaThongBao = Guid.NewGuid();
            var thongBaoMoi = _thongBaoRepository.InsertThongBao(thongBaoDTO);
            foreach (Guid id in danhSachNguoiNhan)
            {
                ChiTietThongBaoDTO chiTietThongBao = new ChiTietThongBaoDTO();
                chiTietThongBao.MaChiTietThongBao = Guid.NewGuid();
                chiTietThongBao.MaNguoiNhan = id;
                chiTietThongBao.MaThongBao = thongBaoMoi.MaThongBao;
                chiTietThongBao.DaXem = 0;
                _chiTietThongBaoRepository.InsertChiTietThongBao(chiTietThongBao);
            }
        }


        public void InsertThongBao(ThongBaoDTO thongBaoDTO, string danhSachNguoiNhan)
        {
            if (thongBaoDTO.MaThongBao.Equals(Guid.Empty))
                thongBaoDTO.MaThongBao = Guid.NewGuid();
            var thongBaoMoi = _thongBaoRepository.InsertThongBao(thongBaoDTO);

            string[] nguoiNhanIdsString = danhSachNguoiNhan.Split(',');

            foreach (string idString in nguoiNhanIdsString)
            {
                Guid nguoiNhanId;
                if (Guid.TryParse(idString, out nguoiNhanId))
                {
                    ChiTietThongBaoDTO chiTietThongBao = new ChiTietThongBaoDTO();
                    chiTietThongBao.MaChiTietThongBao = Guid.NewGuid();
                    chiTietThongBao.MaNguoiNhan = nguoiNhanId;
                    chiTietThongBao.MaThongBao = thongBaoMoi.MaThongBao;
                    chiTietThongBao.DaXem = 0;
                    _chiTietThongBaoRepository.InsertChiTietThongBao(chiTietThongBao);
                }
            }
        }
    }
}
